/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package multiface.promonet.jpa;

import java.io.Serializable;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author diego
 */
@Entity
@Table(name = "puntovendita")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Puntovendita.findAll", query = "SELECT p FROM Puntovendita p"),
    @NamedQuery(name = "Puntovendita.findByIdpuntovendita", query = "SELECT p FROM Puntovendita p WHERE p.idpuntovendita = :idpuntovendita"),
    @NamedQuery(name = "Puntovendita.findByNome", query = "SELECT p FROM Puntovendita p WHERE p.nome = :nome"),
    @NamedQuery(name = "Puntovendita.findByProvincia", query = "SELECT p FROM Puntovendita p WHERE p.provincia = :provincia"),
    @NamedQuery(name = "Puntovendita.findByCitta", query = "SELECT p FROM Puntovendita p WHERE p.citta = :citta"),
    @NamedQuery(name = "Puntovendita.findByIndirizzo", query = "SELECT p FROM Puntovendita p WHERE p.indirizzo = :indirizzo"),
    @NamedQuery(name = "Puntovendita.findByOrario", query = "SELECT p FROM Puntovendita p WHERE p.orario = :orario"),
    @NamedQuery(name = "Puntovendita.findByTelefono", query = "SELECT p FROM Puntovendita p WHERE p.telefono = :telefono"),
    @NamedQuery(name = "Puntovendita.findByReferente", query = "SELECT p FROM Puntovendita p WHERE p.referente = :referente"),
    @NamedQuery(name = "Puntovendita.findByTelefonoReferente", query = "SELECT p FROM Puntovendita p WHERE p.telefonoReferente = :telefonoReferente")})
public class Puntovendita implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "idpuntovendita")
    private Integer idpuntovendita;
    @Basic(optional = false)
    @Column(name = "nome")
    private String nome;
    @Basic(optional = false)
    @Column(name = "provincia")
    private String provincia;
    @Basic(optional = false)
    @Column(name = "citta")
    private String citta;
    @Basic(optional = false)
    @Column(name = "indirizzo")
    private String indirizzo;
    @Basic(optional = false)
    @Column(name = "orario")
    private String orario;
    @Column(name = "telefono")
    private String telefono;
    @Column(name = "referente")
    private String referente;
    @Column(name = "telefono_referente")
    private String telefonoReferente;
    @ManyToMany(mappedBy = "puntovenditaList")
    private List<Promozione> promozioneList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "puntovendita")
    private List<Lavoro> lavoroList;
    @JoinColumn(name = "agenzia", referencedColumnName = "idagenzia")
    @ManyToOne(optional = false)
    private Agenzia agenzia;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "puntovendita")
    private List<Report> reportList;

    public Puntovendita() {
    }

    public Puntovendita(Integer idpuntovendita) {
        this.idpuntovendita = idpuntovendita;
    }

    public Puntovendita(Integer idpuntovendita, String nome, String provincia, String citta, String indirizzo, String orario) {
        this.idpuntovendita = idpuntovendita;
        this.nome = nome;
        this.provincia = provincia;
        this.citta = citta;
        this.indirizzo = indirizzo;
        this.orario = orario;
    }

    public Integer getIdpuntovendita() {
        return idpuntovendita;
    }

    public void setIdpuntovendita(Integer idpuntovendita) {
        this.idpuntovendita = idpuntovendita;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getProvincia() {
        return provincia;
    }

    public void setProvincia(String provincia) {
        this.provincia = provincia;
    }

    public String getCitta() {
        return citta;
    }

    public void setCitta(String citta) {
        this.citta = citta;
    }

    public String getIndirizzo() {
        return indirizzo;
    }

    public void setIndirizzo(String indirizzo) {
        this.indirizzo = indirizzo;
    }

    public String getOrario() {
        return orario;
    }

    public void setOrario(String orario) {
        this.orario = orario;
    }

    public String getTelefono() {
        return telefono;
    }

    public void setTelefono(String telefono) {
        this.telefono = telefono;
    }

    public String getReferente() {
        return referente;
    }

    public void setReferente(String referente) {
        this.referente = referente;
    }

    public String getTelefonoReferente() {
        return telefonoReferente;
    }

    public void setTelefonoReferente(String telefonoReferente) {
        this.telefonoReferente = telefonoReferente;
    }

    @XmlTransient
    public List<Promozione> getPromozioneList() {
        return promozioneList;
    }

    public void setPromozioneList(List<Promozione> promozioneList) {
        this.promozioneList = promozioneList;
    }

    @XmlTransient
    public List<Lavoro> getLavoroList() {
        return lavoroList;
    }

    public void setLavoroList(List<Lavoro> lavoroList) {
        this.lavoroList = lavoroList;
    }

    public Agenzia getAgenzia() {
        return agenzia;
    }

    public void setAgenzia(Agenzia agenzia) {
        this.agenzia = agenzia;
    }

    @XmlTransient
    public List<Report> getReportList() {
        return reportList;
    }

    public void setReportList(List<Report> reportList) {
        this.reportList = reportList;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idpuntovendita != null ? idpuntovendita.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Puntovendita)) {
            return false;
        }
        Puntovendita other = (Puntovendita) object;
        if ((this.idpuntovendita == null && other.idpuntovendita != null) || (this.idpuntovendita != null && !this.idpuntovendita.equals(other.idpuntovendita))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "multiface.promonet.jpa.Puntovendita[ idpuntovendita=" + idpuntovendita + " ]";
    }
    
}
